home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
mus
/
edit
/
PlotCMD.lha
/
plotcmd
/
preset_grabtrack.omed
< prev
next >
Wrap
Text File
|
1999-02-23
|
3KB
|
113 lines
/*
ARexx script for use with PlotCMD
(PlotCMD is a MUIRexx script for use with OctaMED Soundstudio)
Read the PlotCMD doc for details
*/
ADDRESS OCTAMED_REXX
OPTIONS RESULTS
WI_REQUEST '"Data format?"' '"0-40|0-7F|0-FF|80-0-7F"' VAR form
ED_GETNUMLINES VAR len
SELECT
WHEN (form==1) THEN CALL testform(len, '40'x) /* check level ranges */
WHEN (form==2) THEN CALL testform(len, '7F'x)
OTHERWISE
END
IN_SELECT LAST
IN_SETTYPE SAMPLE
SA_CHANGESIZE SIZE len CLEAR
SELECT
WHEN (form==1) THEN CALL applyform1(len)
WHEN (form==2) THEN CALL applyform2(len)
WHEN (form==3) THEN CALL applyform3(len)
WHEN (form==0) THEN CALL applyform4(len)
OTHERWISE
END
SA_REFRESH
EXIT
/* P R O C E D U R E S
-----------------------------------------------------*/
testform: PROCEDURE
len=ARG(1)
max=c2d(ARG(2))
DO i=0 TO len-1
ED_GETDATA LINE i CMDLVL
IF (RESULT>max) THEN DO
WI_REQUEST '"CMD levels out of range!"' '"OK"'
EXIT
END
END
return
applyform1: PROCEDURE
PARSE ARG len
DO i=0 TO len-1
ED_GETDATA LINE i CMDLVL
calcval=1023*RESULT-32736
SA_SETSAMPLE OFFSET i VALUE calcval
END
return
applyform2: PROCEDURE
PARSE ARG len
oldval=-32767
DO i=0 TO len-1
ED_GETDATA LINE i CMDLVL ; level=RESULT
ED_GETDATA LINE i CMDNUM ; nr=RESULT
IF (level==0 & nr==0) THEN
calcval=oldval /* 0000 detected => use last value */
ELSE
calcval=511*level-32193
SA_SETSAMPLE OFFSET i VALUE calcval
oldval=calcval
END
return
applyform3: PROCEDURE
PARSE ARG len
oldval=-32767
DO i=0 TO len-1
ED_GETDATA LINE i CMDLVL ; level=RESULT
ED_GETDATA LINE i CMDNUM ; nr=RESULT
IF (level==0 & nr==0) THEN
calcval=oldval /* 0000 detected => use last value */
ELSE
calcval=255*level-32640
SA_SETSAMPLE OFFSET i VALUE calcval
oldval=calcval
END
return
applyform4: PROCEDURE /* (signed values) */
PARSE ARG len
oldval=0
DO i=0 TO len-1
ED_GETDATA LINE i CMDLVL ; level=RESULT
ED_GETDATA LINE i CMDNUM ; nr=RESULT
IF (level==0 & nr==0) THEN
calcval=oldval /* 0000 detected => use last value */
ELSE
IF (level<128) THEN /* 0 - 7F <=> 0 - 127 */
calcval=256*level
ELSE /* FF - 80 <=> -1 - -128 */
calcval=256*level-2*32767
SA_SETSAMPLE OFFSET i VALUE calcval
oldval=calcval
END
return